package top.lishuoboy.jdbc.a9dbutils;

import cn.hutool.db.Db;
import cn.hutool.db.DbUtil;
import org.apache.commons.dbutils.QueryRunner;
import org.junit.jupiter.api.Test;
import top.lishuoboy.jdbc.a2conn.JDBCUtil;

import java.util.List;

/**
 * <h1>9.2 hutool的 DbUtil 更好用</h1>
 * <br/>commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库，它是对JDBC的简单封装，学习成本极低，并且使用dbutils能极大简化jdbc编码的工作量，同时也不会影响程序的性能。
 * <br/>API介绍：
 * <br/>org.apache.commons.dbutils.QueryRunner
 * <br/>org.apache.commons.dbutils.ResultSetHandler
 * <br/>工具类：org.apache.commons.dbutils.DbUtils
 *
 * @author lishuoboy
 * @date 2021-12-21 00:46
 */
public class A9ApacheDbUtils {

    /** hutool DbUtil */
    @Test
    public void dbUtil() throws Exception {
        Db db = DbUtil.use(JDBCUtil.getDs());

        // 增删改
        String sql = "insert into class_innodb (classid,classname,remark) values (?, ?, ?)";
        int count = db.execute(sql, "1", "一班", "呵呵");
        System.out.println("添加了" + count + "条记录");

        // 查询一条记录
        sql = "select * from class_innodb where ClassId = ?";
        cn.hutool.db.handler.BeanHandler<ClassInnodb> handler = new cn.hutool.db.handler.BeanHandler<>(ClassInnodb.class);
        ClassInnodb classInnodb = db.query(sql, handler, "1");
        System.out.println(classInnodb);

        // 查询多条记录
        QueryRunner runner = new QueryRunner();
        sql = "select * from class_innodb where ClassId = ?";
        cn.hutool.db.handler.BeanListHandler<ClassInnodb> listHandler = new cn.hutool.db.handler.BeanListHandler<>(ClassInnodb.class);
        List<ClassInnodb> classInnodbList = db.query(sql, listHandler, "1");
        System.out.println(classInnodbList);
    }
}
